package string

import "strings"

// 翻转单词顺序

// 双指针

func ReverseWords(s string) string {
	n := len(s)
	i, j := n-1, n-1
	var res []string

	for ; i >= 0; i-- {
		// 判断是否有新的单词
		if s[i] == ' ' && i < n-1 && s[i+1] != ' ' {
			res = append(res, s[i+1:j+1])
		} else if s[i] != ' ' && i == 0 {
			res = append(res, s[i:j+1])
		}

		// 判断是否更新尾指针
		if s[i] == ' ' && i > 0 && s[i-1] != ' ' {
			j = i - 1
		}
	}

	return strings.Join(res, " ")
}
